package Screens.Manager;

import java.lang.reflect.InvocationTargetException;

import org.newdawn.slick.Graphics;
import org.newdawn.slick.SlickException;

/** Screen base class
 * @author Aikidos
 */
public abstract class Screen {

	/** Initialize screen */
    public abstract void init() throws SlickException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException, ClassNotFoundException;

    /** Load content 
     * @throws SlickException */
    public abstract void loadContent() throws SlickException;

    /** Update screen 
     * @param delta - Time delta
     */
    public abstract void update(int delta) throws SlickException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException, ClassNotFoundException;

    /** Draw screen
     * @param g - Slick2d graphics
     */
    public abstract void draw(Graphics g) throws SlickException;

    /** Unload content 
     * @throws SlickException */
    public abstract void unloadContent() throws SlickException;

    /** Shutdown screen */
    public abstract void shutdown();
	
}
